package com.huihang.core.utils;

import java.util.regex.Pattern;

/**
 * 名称校验工具
 */
public class ValidateNameUtil {
    // 定义两个正则表达式，一个用于汉字姓名，一个用于英文姓名
    private static final Pattern CHINESE_NAME_PATTERN = Pattern.compile("^[\\u4e00-\\u9fa5]{2,18}$");
    private static final Pattern ENGLISH_NAME_PATTERN = Pattern.compile("^[a-zA-Z\\s-]{2,80}$");

    /**
     * 验证输入的名字是否符合汉字或英文名字的格式.
     *
     * @param name 待验证的名字字符串
     * @return 如果名字格式正确返回 true，否则返回 false
     */
    public static boolean validateName(String name) {
        if (name == null || name.trim().isEmpty()) {
            return false;
        }

        // 检查是否为中文名字或英文名字
        return isValidChineseName(name) || isValidEnglishName(name);
    }

    /**
     * 验证输入的名字是否符合汉字姓名的格式.
     *
     * @param name 待验证的名字字符串
     * @return 如果名字格式正确返回 true，否则返回 false
     */
    public static boolean isValidChineseName(String name) {
        if (name == null || name.trim().isEmpty()) {
            return false;
        }
        return CHINESE_NAME_PATTERN.matcher(name).matches();
    }

    /**
     * 验证输入的名字是否符合英文姓名的格式.
     *
     * @param name 待验证的名字字符串
     * @return 如果名字格式正确返回 true，否则返回 false
     */
    public static boolean isValidEnglishName(String name) {
        if (name == null || name.trim().isEmpty()) {
            return false;
        }
        return ENGLISH_NAME_PATTERN.matcher(name).matches();
    }
}
